package com.bskms.mapper;

import com.bskms.model.LoginInfoDo;
import com.bskms.model.Message;
import com.bskms.model.MessageRecordDo;
import com.bskms.model.UserParameter;
import com.bskms.bean.User;
import com.bskms.bean.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface UserMapper {

  long countByExample(UserExample example);

  int deleteByExample(UserExample example);

  int deleteByPrimaryKey(String userId);

  int insert(User record);

  int insertSelective(User record);

  List<User> selectByExample(UserExample example);

  User selectByPrimaryKey(String userId);

  int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

  int updateByExample(@Param("record") User record, @Param("example") UserExample example);

  int updateByPrimaryKeySelective(User record);

  int updateByPrimaryKey(User record);

  int countAllUserByRoleId(Integer roleId);

  List<User> getAllUserByRoleId(Integer roleId, Integer begin, Integer count);

  int countAllUserByNotRoleId(Integer roleId);

  List<User> getAllUserByNotRoleId(Integer roleId, Integer begin, Integer count);

  List<User> getAllUserByLimit(UserParameter userParameter);

  int countAllUserByLimit(UserParameter userParameter);

  List<User> getAllDelUserByLimit(UserParameter userParameter);

  int countAllDelUserByLimit(UserParameter userParameter);

  String getName(@Param("userId") String userId);

  List<User> selectAllTea();

  List<User> selectAllUser();

  User getBZR(@Param("classId") Integer classId);

  List<User> selectAllJiazhang();

  /**
   * 以用户名和密码查询用户
   *
   * @return 存在返回该用户对象，不存在返回null
   */
  com.bskms.model.User queryUser(@Param("name") String name, @Param("password") String password);

  /**
   * 以用户名查询用户
   *
   * @return 存在该用户名返回用户对象，否则返回null
   */
  com.bskms.model.User queryUserByName(@Param("name") String name);

  /**
   * 插入一位用户
   */
  void insertUser(@Param("name") String name, @Param("password") String password);

  /**
   * 根据用户名获取用户信息
   */
  com.bskms.model.User getUserByName(@Param("name") String name);


  int addLoginInfo(LoginInfoDo loginInfoDo);

  List<Message> listMessageLimit();

  int addMessageRecord(MessageRecordDo messageRecordDo);
}